1. Field of the Invention
The present invention relates generally to computer graphics, and in particular, to a method, apparatus, and article of manufacture for three-dimensional (3D) surface modeling applications and passively associating surfaces with each other.
2. Description of the Related Art
In computer-aided design (CAD) drawing applications, parametric/associative surface models consists of a (possibly large) collection of individual surface objects. The surface objects may depend on each other or depend on other objects or parameters. A common way a surface may become dependent on other objects is when it is created using geometry of the other objects (referred to herein as related surfaces/geometry/objects). An example is a blend surface that is created by selecting two edges of two other surfaces, or an offset surface that is created by offsetting another surface.
In some scenarios, it is desirable for the surfaces to keep their relations and let the system automatically preserve these relations and update all related surfaces when some surfaces are edited. In other scenarios, it is more desirable not to maintain these relations and treat the surfaces as individual unrelated surfaces, to avoid unintended change propagations. However, even if the relations between the surfaces are not maintained, it is desirable to be able to edit as many parameters of the surface as possible. For example it is desirable to be able to edit the blend surface continuity (G0-positional, G1-tangential, G2-curvature) or the offset surface distance, even if from the user's point of view the edited surface does not maintain any relation with the surfaces it has been created from. Such problems may be better understood with a description of solid modeling and the management of relations in such models.
Most traditional solid modelers are based on feature driven modeling operations where two-dimensional (2D) sketches are extruded/revolved/lofted and each subsequent feature is built on the previous feature. These modeling operations are usually displayed to the user in a tree structure (feature history tree) and edit operations must follow the hierarchical order of the tree. In addition, most of the parametric data is entered via dialogs during the creation process and subsequent modifications are summoned from the feature tree.
Simpler solid modelers work directly on the B-REP (boundary representation) and modeling operations are not tracked or maintained in a parametric/history tree. These type of modelers usually let the user tweak vertex/edge/faces of a solid without any sort of constraints. This modeling paradigm is useful when working with imported models or complex native models. Further, such simple modelers usually let the user modify vertex/edge/face via either dialog or move/rotate/scale graphic affordances directly in the canvas.
More recently a new “synchronous” technology was introduced that permits one to blend the advantage of the traditional features like solid modeling with some of the direct modeling advantages. The users are also presented with a “Feature Tree” browser but the features are auto detected by analyzing the model itself—thus providing greater flexibility and not relying on a linear succession of modeling operations. Further, in most cases, the user is presented with graphic affordances directly in the canvas that relates to the parametric property being edited or detected.
On the other hand, most surface modelers are either pure NURBS (non-uniform rational b-spline) modelers where all operations result in a NURBS surface or are solid modeling disguised as surface modelers. In the latter case surfaces are considered “bodies” and any of the previous modeling paradigms are used on them (e.g., feature driven, direct, synchronous, etc.).
Some of the pure NURBS modelers have implemented their own associative engines that track underlying creation geometry (e.g., 2D/3D [three-dimensional] sketches) and some of the edit operations (e.g., trimming/blending surfaces). The associative actions are sometimes displayed in a scene graph (i.e., similar to a history tree) and nodes have a limited editing capability. Further, most of the surface edits are made directly on the surface using various widgets/gizmos (e.g., move/scale/rotate) that control the location of control vertices on the UV hull/texture map.
In summary, with prior art 3D surface modeling, surface objects can either be related or not related to each other. If related, a surface object is associative and depends on properties of “other surfaces.” If the “other surfaces” change, the dependent surface automatically updates. Similarly, non-associative surfaces have no relation to surfaces that the non-associative surface was created from. However, because such a surface is non-associative, if the “other surface” is modified, the non-associative surface does not automatically update. Further, the non-associative surface does not maintain any history or knowledge base of the surfaces used to create it. Thus, the user has no option to retain an “associative/relation” knowledge base and limits the capabilities of the user to actively determine the behavior of a surface.